Skip to content

Add Synchronization 2 tutorial series #339

Open
gpx1000 wants to merge 8 commits into
KhronosGroup:mainfrom
gpx1000:sync2-tutorial
Open

Add Synchronization 2 tutorial series #339
gpx1000 wants to merge 8 commits into
KhronosGroup:mainfrom
gpx1000:sync2-tutorial

Conversation

@gpx1000
Copy link
Copy Markdown
Contributor

@gpx1000 gpx1000 commented Mar 21, 2026

with validation and advanced topics.

Introduce comprehensive Synchronization 2 tutorial covering modern Vulkan synchronization patterns. Add chapters on dependency anatomy, pipeline barriers, timeline semaphores, frame-in-flight architecture, async compute, transfer queues, dynamic rendering sync, host image copies, and synchronization validation. Include practical examples from Simple Engine and guidance on debugging with validation layers and interpreting VUIDs.

gpx1000 added 2 commits March 20, 2026 23:16
…pics

Introduce comprehensive Synchronization 2 tutorial covering modern Vulkan synchronization patterns. Add chapters on dependency anatomy, pipeline barriers, timeline semaphores, frame-in-flight architecture, async compute, transfer queues, dynamic rendering sync, host image copies, and synchronization validation. Include practical examples from Simple Engine and guidance on debugging with validation layers and interpreting VUIDs.
Update all xref links to use absolute paths prefixed with 'Synchronization/' instead of relative paths. Correct image references to use absolute paths starting with '/images/'. This ensures proper navigation between chapters and correct image rendering across the Synchronization tutorial series.
Copy link
Copy Markdown
Collaborator

@SaschaWillems SaschaWillems left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did a first review run and added comments to the documentation where possible.

The information presented here is great, I'm just not sure if it's the best idea to have this as a separate part of the tutorial.

Here are some random additional thoughts that we could discuss:

  • This duplicates some information we already have in the tutorial and/or the guide
  • It's heavily based on the simple game engine part of the tutorial
    • So it at least should come after that part of the tutorial (in the navigation)
  • It should have a few more links to existing resources, esp. the spec
  • It could use some more images, some chapters are text only and feel like walls of text

So my thought after reading this was "Why a separate chapter, why not integrate this into the tutorial right away?"

Comment thread antora/modules/ROOT/nav.adoc Outdated
Comment thread en/Synchronization/Anatomy_of_a_Dependency/01_introduction.adoc Outdated
Comment thread antora/modules/ROOT/nav.adoc Outdated
Comment thread en/Synchronization/Anatomy_of_a_Dependency/03_sync2_advantage.adoc
Comment thread en/Synchronization/Pipeline_Barriers_Transitions/02_image_barrier.adoc Outdated
Comment thread en/Synchronization/Synchronization_Validation/03_interpreting_vuids.adoc Outdated
Comment thread en/Synchronization/Profiling_Optimization/03_visualizing_stalls.adoc Outdated
gpx1000 added 3 commits May 25, 2026 02:02
…tion tutorial

Update all Markdown code block language identifiers from `[,c++]` to `[,cpp]` throughout the Synchronization tutorial series. Add section on identifying dedicated compute/transfer queues with code examples. Fix typo in function name reference (vkCmdPipelineBarrier2 → vk::CmdPipelineBarrier2). Add warning about eConcurrent performance impact on images. Clarify present operation binary semaphore requirement. Add note about WSI limitations with timeline semaphores. Include tip about using vkconfig for validation setup. Update section heading and VUID example number.
Introduce summary and final thoughts for the Anatomy of a Synchronization Dependency series. Add barrier types comparison table covering global memory, buffer memory, and image memory barriers with their purposes and key structures. Include navigation links to previous and next chapters in the Synchronization tutorial series.
@gpx1000 gpx1000 requested a review from SaschaWillems May 26, 2026 03:17
@SaschaWillems
Copy link
Copy Markdown
Collaborator

The tutorial text is looking good now, but I'm not able to review the sync engine due to #387

@gpx1000
Copy link
Copy Markdown
Contributor Author

gpx1000 commented Jun 4, 2026

#388 Should fix it.

@SaschaWillems
Copy link
Copy Markdown
Collaborator

With the fix from #388 I can build the code for this PR, but the simple engine is stuck in an infinite loop for me and stuck at 0%:

image

@gpx1000
Copy link
Copy Markdown
Contributor Author

gpx1000 commented Jun 4, 2026

See if the latest will fix that infinite loop.

@SaschaWillems
Copy link
Copy Markdown
Collaborator

That does fix the infinite loop, but all I get is a black screen and crash shortly after. I did debug this, and it seems that it simply can't load the gltf file. I guess this is because the bistro scene is located in a different folder than the project itself.

@gpx1000
Copy link
Copy Markdown
Contributor Author

gpx1000 commented Jun 4, 2026

Oh, yeah, that's just a need to run from the sync2_engine directory as your working directory and not for the simple_engine directory. Maybe I should make it so you can run from either?

@SaschaWillems
Copy link
Copy Markdown
Collaborator

Working directory after CMake setup is attachments\sync2_engine\build\ for me.

Bistro is under attachments\simple_engine\assets

Ideally, the sync2 engine will find the asset out of the box.

@gpx1000
Copy link
Copy Markdown
Contributor Author

gpx1000 commented Jun 4, 2026

Okay, you can now run from more places. If we get error reports about this in the future I might just set it from CMake as a macro and use one path location rather than searching for it. for now, this should work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants